package com.qcby.demo.proxyaop.proxy.cglib;

import com.qcby.demo.proxyaop.proxy.star.JiaLing2;
import org.springframework.cglib.core.DebuggingClassWriter;
import org.springframework.cglib.proxy.Enhancer;

/**
 * @className: JdkDynamicProxy
 * @description:cglib动态代理
 * @author: lxt
 * @create: 2021-05-12 15:34
 **/
public class CglibDynamicProxy {


    public static void main(String[] args) {
        //利用cglib的代理类可以将内存中的class文件写入本地磁盘
//        System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY,"D:/proxydemo/cglib");

        //产生一个CGLIB的代理逻辑类
        TvCblibInterceptor tvCblibInterceptor = new TvCblibInterceptor();
        //产生一个CGLIB enhancer增强类对象
        Enhancer enhancer = new Enhancer();
        //设置需要被增强的类的class对象
        enhancer.setSuperclass(JiaLing2.class);
        //设置相应的代理逻辑类，该类必须实现MethodIntercepeor接口
        enhancer.setCallback(tvCblibInterceptor);
        //利用enhancer创建出代理对象
        JiaLing2 cglibproxyobject = (JiaLing2) enhancer.create();



        cglibproxyobject.display();


    }
}
